package Test;

public class Node {
    String data;            //数据域
    Node next;              //相当于指针域，指向下一个结点

    public void head(Node newnode) {      //前插方式
        newnode.next = this.next;         //要插入的结点的下一个结点指向调用该函数的头结点的原本的下一个结点
        this.next = newnode;          //将头结点的下一个结点指向要插入的结点
    }
    public void tail(Node newnode) {      //后插方式
        Node test = this;              //新建一个结点指向调用该函数的头结点
        while(true) {
            if(test.next == null) {      //如果test结点没有下一个结点
                test.next = newnode;     //将要插入的结点插入到该test结点后
                break;                 	 //然后退出循环
            }
            else
                test = test.next;        //如果test结点有下一个结点，将test等于test的下一个结点
        }
    }

    public void printlist() {              //输出邻接表
        Node test = this;                   //新建一个test结点，指向调用该函数的头结点
        System.out.print(test.data + " ");      //输出该头结点的数据域（+""使为了使得test的数据域转换为String类型）
        while((test = test.next) != null) {     //使test等于test的下一个结点（这样就算条件不成立，test还可以一直更新）
            System.out.print(test.data + " ");   	//若test不为空，输出test的数据域
        }
        System.out.println();
    }
}

